package main

import (
	"fmt"
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	engine := gin.Default()
	// 路由注册
	engine.GET("/query", doQuery)
	// 路径中的参数可以设置默认值
	engine.GET("/defaultQuery", defaultQuery)
	// /getQuery?query=23 路径中获取一个参数
	engine.GET("/getQuery", getQuery)
	// /getQueryS?name=23&age=232 路径中获取多个参数
	engine.GET("/getQueryS", getQueryS)
	// /urlQuery/:username/:password 在路径中获取参数
	engine.GET("/urlQuery/:username/:password", urlQuery)

	// 默认为8080
	engine.Run(":9000")
}

// 127.0.0.1:9000/query?query=1000,
// 获取路径后面的参数
func doQuery(c *gin.Context) {
	query := c.Query("query")
	c.JSON(http.StatusOK, gin.H{
		"query": query,
	})
}

/*
请求：
127.0.0.1:9000/defaultQuery
结果：
{
    "query": "1000"
}
请秋：
127.0.0.1:9000/defaultQuery?query=22
结果：
{
    "query": "22"
}
query 路径中的参数
当不传入参数的时候,选用默认值1000，传入的时，采用传入的结果
*/
func defaultQuery(c *gin.Context) {
	query := c.DefaultQuery("query", "1000")
	c.JSON(http.StatusOK, gin.H{
		"query": query,
	})
}

/**
127.0.0.1:9000/getQuery
{
    "query": "没有取到值"
}
127.0.0.1:9000/getQuery?query=23
{
    "query": "23"
}
*/
// getQuery 带上了 是否取到值的判断
func getQuery(c *gin.Context) {
	s, ok := c.GetQuery("query")
	if !ok {
		fmt.Println("没有取到值")
		s = "没有取到值"
	}
	c.JSON(http.StatusOK, gin.H{
		"query": s,
	})
}

/**
127.0.0.1:9000/getQuerys?name=23&age=232

{
    "age": "232",
    "name": "23"
}
*/
// 多个参数获取get
func getQueryS(c *gin.Context) {
	name := c.Query("name")
	age := c.Query("age")
	c.JSON(http.StatusOK, gin.H{
		"name": name,
		"age":  age,
	})
}

/*
127.0.0.1:9000//urlQuery/ruixule/123456

*/
func urlQuery(c *gin.Context) {
	username := c.Param("username")
	password := c.Param("password")
	c.JSON(http.StatusOK, gin.H{
		"username": username,
		"password": password,
	})
}
